// 函数节流
function throttle(fn, delay) {
  let timer = null
  return function() {
    if (timer) {
      return
    }
    timer = setTimeout(() => {
      fn.apply(this, arguments)
      timer = null
    }, delay)
  }
}
// 函数防抖

function debounce(fn, delay) {
  let timer = null
  return function() {
    if (timer) {
      clearTimeout(timer)
    }
    timer = setTimeout(() => {
      //模拟触发change事件
      fn.apply(this, arguments)
      // 清空计时器
      timer = null
    }, delay)
  }
}
/** 
   * 核心逻辑 防抖：触发高频事件时，在delay时间内函数最终只会执行一次，如果在delay时间内再次触发事件，则重新计算时间；
             节流：触发高频事件时，稀释函数执行的频率
  */

export default {
  throttle,
  debounce,
}
